package com.wangct.util;

import java.net.ContentHandler;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class DBwork {
	final String tag = "----------------->DBwork";

	SQLiteDatabase dataBase;// 打开的数据库对象

	Cursor mainCursor = null;

	Context dbContext = null;// 全局context对象

	// 创建对象时传来Context对象
	public DBwork(Context mContext) {
		this.dbContext = mContext;
	}

	// 创建或者打开数据库
	/**
	 * @author wangct
	 * @param dbName
	 *            数据库文件名字
	 */
	public void creatDabase(String dbName) {
		// 创建或打开数据库（此处需要使用绝对路径）
		dataBase = SQLiteDatabase.openOrCreateDatabase(dbContext.getFilesDir().toString() + "/" + dbName + ".db3",
				null); // ①

		Log.d(tag, "数据库的路径:" + dbContext.getFilesDir().toString());
		Log.d(tag, "成功创建数据库");

	}

	// 定义方法 判断指定数据库是否存在

	public Boolean getDataBase() {
		return true;

	}

	// 定义方法 执行创建表方法

	public Boolean creatTabDb() {

		try {
			// 执行DDL创建数据表
			dataBase.execSQL("create table news_inf(_id integer" + " primary key autoincrement,"
					+ " news_title varchar(50)," + " news_content varchar(255))");
			Log.d(tag, "成功创建表");
		} catch (Exception e) {
			// TODO: handle exception
			Log.d(tag, "创建表失败！"+e);
			return false;
		}
		return true;
	}

	// 如果存在 执行插入方法
	public void insertData(String title, String content) {
		// 执行插入语句
		dataBase.execSQL("insert into news_inf values(null , ? , ?)", new String[] { title, content });
		Log.d(tag, "成功执行插入");
	}

	// 如果存在 执行读取方法 返回一个Coursor对象
	public Cursor getCoursor() {
		// 进行读取数据库所有内容
		Cursor cursor = dataBase.rawQuery("select * from news_inf", null);
		Log.d(tag, "成功查询并返回Cursor对象");
		return cursor;

	}

	/*
	 * 如果数据库未关闭 关闭数据库
	 */
	public void dataBaseClose() {
		// 退出程序时关闭SQLiteDatabase
		if (dataBase != null && dataBase.isOpen()) {
			dataBase.close();
			Log.d(tag, "成功关闭数据库");
		}
	}

	/**
	 * @param source
	 *            用户输入
	 * 
	 */
	public void onClasdfsadfsadfick(View source) {

		// 获取用户输入
		String name = "";
		String password = "";

		try {

			// 执行插入
			insertData( name, password);
			// 进行读取数据库所有内容
			Cursor cursor = dataBase.rawQuery("select * from news_inf", null);
			// 加载到listview里面
			//inflateList(cursor);

		} catch (SQLiteException se) {

			// 执行DDL创建数据表
			dataBase.execSQL("create table news_inf(_id integer" + " primary key autoincrement,"
					+ " news_title varchar(50)," + " news_content varchar(255))");
			// 执行insert语句插入数据
			insertData( name, password);
			// 执行查询
			Cursor cursor = dataBase.rawQuery("select * from news_inf", null);
			//inflateList(cursor);
		}

	}

	public void selecsasdafdsfatbn(View v) {
		Log.d(tag, "返回所有列的总数:" + mainCursor.getColumnCount());
		Log.d("---------这里是分割线--------", "---------这里是分割线--------");

		Log.d(tag, "返回指定列的名称，如果不存在返回-1:" + mainCursor.getColumnIndex("news_title"));// getColumnIndex(String
		// columnName)——返回指定列的名称，如果不存在返回-1
		Log.d(tag, "从零开始返回指定列名称，如果不存在将抛出IllegalArgumentException 异常 news_title :"
				+ mainCursor.getColumnIndexOrThrow("news_title"));// getColumnIndexOrThrow(String
		// columnName)——从零开始返回指定列名称，如果不存在将抛出IllegalArgumentException
		// 异常。
		Log.d("---------这里是分割线--------", "---------这里是分割线--------");

		// Log.d(tag, "从零开始返回指定列名称，如果不存在将抛出IllegalArgumentException 异常 _id :" +
		// mainCursor.getColumnIndexOrThrow("123456"));

		Log.d(tag, "从给定的索引返回列名:" + mainCursor.getColumnName(0));// getColumnName(int
																// columnIndex)——从给定的索引返回列名
		Log.d(tag, "从给定的索引返回列名:" + mainCursor.getColumnName(1));
		Log.d(tag, "从给定的索引返回列名:" + mainCursor.getColumnName(2));
		// Log.d(tag, "从给定的索引返回列名:" + mainCursor.getColumnName(3));//如果没有该索引
		// 则抛出IllegalStateException异常
		Log.d("---------这里是分割线--------", "---------这里是分割线--------");

		Log.d(tag, "返回一个字符串数组的列名:" + mainCursor.getColumnNames());// getColumnNames()——返回一个字符串数组的列名
		String s[] = mainCursor.getColumnNames();
		for (int i = 0; i < s.length; i++) {
			Log.d(tag, "字符串数组:" + s[i]);

		}
		Log.d("---------这里是分割线--------", "---------这里是分割线--------");

		Log.d(tag, "返回Cursor 中的行数:" + mainCursor.getCount());// getCount()——返回Cursor
																// 中的行数
		Log.d("---------这里是分割线--------", "---------这里是分割线--------");

		// Log.d(tag, "返回所有列的总数:" + mainCursor.copyStringToBuffer(columnIndex,
		// buffer);());// copyStringToBuffer(int
		// columnIndex,
		// CharArrayBuffer
		// buffer)——在缓冲区中检索请求的列的文本，将将其存储

		// while(mainCursor.moveToNext()){
		// Log.d(tag, "mainCursor的数据 :" + mainCursor.getString(0));
		// }
	}

	private void inflasdfasagteList(Cursor cursor) {
		mainCursor = cursor;
		Log.d(tag, "返回Cursor 中的行数:" + cursor.getCount());
		// 中的行数
		while (cursor.moveToNext()) {
			Log.d(tag, "cursor的数据 :" + cursor.getString(0));
		}
		Log.d("---------这里是分割线-----------------------", "---------这里是分割线--------------------------");

		Log.d(tag, "返回mainCursor 中的行数:" + mainCursor.getCount());

		while (mainCursor.moveToNext()) {
			Log.d(tag, "mainCursor的数据 :" + mainCursor.getString(0));
		}
		// // 填充SimpleCursorAdapter
		// SimpleCursorAdapter adapter = new SimpleCursorAdapter(DBTest.this,
		// R.layout.line, cursor,
		// new String[] { "news_title", "news_content" }, new int[] {
		// R.id.my_title, R.id.my_content },
		// CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); // ③
		// // 显示数据
		// listView.setAdapter(adapter);
	}

}